
//---------------------------------------------------------------------------
#ifndef PG1_ENGINE_H
#define PG1_ENGINE_H
//---------------------------------------------------------------------------
#include "pg1_api.h"
//---------------------------------------------------------------------------
namespace pg1
{
//---------------------------------------------------------------------------
class Window;
class Renderer;
class Game;
class DirectInput;
class Timer;
//---------------------------------------------------------------------------
class PG1_API Engine
{
public:
	Engine (HINSTANCE hInstance, unsigned int uiWidth = 640, unsigned int uiHeight = 480);
	~Engine ();

	bool init ();
	void run ();


// rendering
private:
	HINSTANCE m_hInstance;
	unsigned int m_uiWidth;
	unsigned int m_uiHeight;

	Window* m_pkWindow;
	Renderer* m_pkRenderer;


// game
public:
	void setGame (Game* pkGame);

private:
	Game* m_pkGame;


// input
private:
	DirectInput* m_pkInput;


// timer
private:
	Timer* m_pkTimer;
};
//---------------------------------------------------------------------------
#include "pg1_engine.inl"
//---------------------------------------------------------------------------
} // end namespace
//---------------------------------------------------------------------------
#endif // PG1_ENGINE_H
//---------------------------------------------------------------------------
